﻿using System;
using System.Runtime.Serialization;

[assembly: CLSCompliant( true )]
namespace TwinHead.Frameworks
{
    /// <summary>
    /// Twinhead에서 관리되는 혹은 의도된 예외를 나타냅니다.
    /// </summary>
    [Serializable]
    public class TwinheadException : Exception
    {
        /// <summary>
        /// 예외메세지를 가져오거나 설정합니다. 
        /// </summary>
        public new string Message { get; set; }

        /// <summary>
        /// 기본생성자입니다
        /// </summary>
        public TwinheadException()
            : base()
        {
        }

        /// <summary>
        ///  생성자입니다.
        /// </summary>
        /// <param name="message">예외 메세지</param>
        public TwinheadException( string message )
            : base( message )
        {
            this.Message = message;
        }

        /// <summary>
        /// 생성자입니다.
        /// </summary> 
        /// <param name="message">예외 메세지</param>
        /// <param name="inner">내부에 포함될 예외객체</param>
        public TwinheadException( string message, Exception inner )
            : base( message, inner )
        {
            this.Message = message;
        }

        /// <summary> 
        /// 스트리밍을 위해서 내부에서만 동작하는 SolarsException입니다. 
        /// </summary> 
        /// <param name="info">Serializaion을 위한 정보</param> 
        /// <param name="context">Streaming 대상 컨텍스트</param> 
        protected TwinheadException( SerializationInfo info, StreamingContext context )
            : base( info, context )
        {
        }

        /// <summary>
        /// 예외에 관련한 정보를 SerializationInfo에 설정합니다.
        /// </summary>
        /// <param name="info"></param>
        /// <param name="context"></param>
        public override void GetObjectData( SerializationInfo info, StreamingContext context )
        {
            base.GetObjectData( info, context );
        }
    }
}
